package org.example.service;

import jakarta.servlet.http.HttpServletRequest;
import org.example.dataobject.CommentDO;
import org.example.error.BusinessException;

import java.util.List;

/**
 * @author xietl
 * @date 2025/9/1  15:54
 * @description 评论接口
 */
public interface CommentService {
    /**
     * 添加评论
     * @param postId 帖子ID
     * @param commentContent 评论内容
     * @param request HTTP请求（用于获取用户信息）
     * @return 评论ID
     * @throws BusinessException 业务异常
     */

    CommentDO  addCommentAndReturn(int postId, String commentContent, HttpServletRequest request) throws BusinessException;


    /**
     * 根据帖子ID查询评论列表
     * @param postId 帖子ID
     * @return 评论列表
     * @throws BusinessException 业务异常
     */
    List<CommentDO> getCommentsByPostId(int postId) throws BusinessException;

    /**
     * 删除评论（软删除）
     * @param commentId 评论ID
     * @param request HTTP请求（用于权限校验）
     * @return 删除结果
     * @throws BusinessException 业务异常
     */
    int deleteComment(int commentId, HttpServletRequest request) throws BusinessException;


    /**
     * 统计帖子的评论数量
     * @param postId 帖子ID
     * @return 评论数量
     * @throws BusinessException 业务异常
     */
    int countCommentsByPostId(int postId) throws BusinessException;

    /**
     * 失效评论缓存
     * @param postId 帖子ID
     */
    void invalidateCommentCache(int postId);

}
